package com.ys.day30.p3Properties;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 描述:
 * JDBC、Spring、SpringMVC框架使用它配置数据源
 *
 * ​	Properties用作集合，还可以当做配置文件使用
 *
 * @author CodeYang
 * @version 2021/1/12 23:18
 */
public class P1Properties配置文件 {

    /**
     *  Properties
     *   1:可以做集合
     *   2:可以做配置文件
     *   注意: 继承自Hashtable 所以key不能重复,
     *   可以将文件标记为 Source Root 资源根文件夹,会把 该文件夹下面的内容直接加载进入JVM 与源码同级
     *   也可以标记为Reourece Root 资源文件 根 一样也会加载进入 JVM 不过是专门加载资源文件Root目录
     *
     *   Properties的核心本质就是一个Hashtable Map<Key,Value>
     *       可以通过获取类加载器,来获取资源流(in 流) 得到 资源文件的
     *   Properties 是Java 默认自带的类,可以帮助我们自动去解析(load(in)) Properties集合的流对象
     * @param args
     */
    public static void main(String[] args) {

        /**
         *  获取 properties文件的 key对应的value
         */
        // 1 创建 Properties的集合
        Properties properties = new Properties();
        // 2 获得当前的类的 类加载器
//        ClassLoader classLoader = P1Properties配置文件.class.getClassLoader();
//        // 3: 返回用于读取指定资源的输入流
//        InputStream in = classLoader.getResourceAsStream("data.properties");

        // 2,3 合并成一步
        InputStream in = P1Properties配置文件.class.getClassLoader().getResourceAsStream("data.properties");


        try {
            properties.load(in);
            String property1 = properties.getProperty("socket.server.ip");
            String property2 = properties.getProperty("socket.server.port");
            System.out.println(property1);
            System.out.println(property2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
